﻿<!DOCTYPE html>
<html>
<head>
    <title>OAuth-Server</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <link href="http://g.tbcdn.cn/sj/wqui/1.0.0/css/sui.min.css" rel="stylesheet">
    <script type="text/javascript" src="http://g.tbcdn.cn/sj/lib/jquery/dist/jquery.min.js"></script>
    <script type="text/javascript" src="http://g.tbcdn.cn/sj/wqui/1.0.0/js/sui.min.js"></script>
</head>
<body>
    <div class="sui-container" style="margin-top:10px;margin-left:10px">
        <h2>欢迎使用OAuth2.0-授权机制</h2>
        <p>开放接口，基于OAuth2.0，目前支持grant_type类型为授权码模式（authorization code）、密码模式（resource owner password credentials）、客户端模式（client credentials）、简化模式（implicit）、刷新令牌（refresh token）。</p>
        <p>使用前，需要先注册client应用，获取client_id和client_secret。<a href="client-register.html">点此注册</a></p>
        <p>目录中SQL文件导入到MySQL或MariaDB，修改项目webconfig中的UsedConnectionString的值。</p>
        <p>测试token访问，所需要的测试用户账号，用户名和密码均为default。</p>
        <h4>接口文档</h4>
        <p>
            <table class="sui-table table-bordered">
                <thead>
                    <tr>
                        <th>接口</th>
                        <th>说明</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>oauth2/token</td>
                        <td>获取访问token</td>
                    </tr>
                    <tr>
                        <td>oauth2/authorzie</td>
                        <td>用户授权获取code地址</td>
                    </tr>
                </tbody>
            </table>
            <span>注：使用前先了解OAuth2.0协议，<a href="http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html" target="_blank">点此查看</a></span>
        </p>
        <h4>密码模式&客户端模式</h4>
        <h5>获取access_token</h5>
        <p>1. 请求地址：oauth2/token</p>
        <p>2. 请求参数</p>
        <p>
            <table class="sui-table table-bordered">
                <thead>
                    <tr>
                        <th>参数</th>
                        <th>值</th>
                        <th>说明</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>grant_type</td>
                        <td>password</td>
                        <td>授权类型</td>
                    </tr>
                    <tr>
                        <td>client_id</td>
                        <td>xxxx</td>
                        <td>应用申请的ID</td>
                    </tr>
                    <tr>
                        <td>client_secret</td>
                        <td>xxxx</td>
                        <td>应用申请的密钥</td>
                    </tr>
                    <tr>
                        <td>username</td>
                        <td>xxxxx</td>
                        <td>用户名</td>
                    </tr>
                    <tr>
                        <td>password</td>
                        <td>xxxxx</td>
                        <td>用户密码</td>
                    </tr>
                </tbody>
            </table>
            <span>注：grant_type为client_credentials，则不需要username和password两参数</span>
        </p>
        <p>3. 返回参数</p>
        <p>
            <table class="sui-table table-bordered">
                <thead>
                    <tr>
                        <th>参数</th>
                        <th>值</th>
                        <th>说明</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>access_token</td>
                        <td>1a19d92f59</td>
                        <td>访问令牌</td>
                    </tr>
                    <tr>
                        <td>token_type</td>
                        <td>bearer</td>
                        <td>Authorization类型</td>
                    </tr>
                    <tr>
                        <td>expires_in</td>
                        <td>7200</td>
                        <td>访问令牌失效时间（秒），2小时</td>
                    </tr>
                    <tr>
                        <td>refresh_token</td>
                        <td>030d9af725</td>
                        <td>刷新令牌</td>
                    </tr>
                    <tr>
                        <td>refresh_expires_in</td>
                        <td>2592000</td>
                        <td>刷新令牌失效时间（秒），30天</td>
                    </tr>
                </tbody>
            </table>
            <span>注：返回格式JSON</span>
        </p>
        <h4>授权码模式</h4>
        <h5>获取code&访问令牌</h5>
        <p>1. 访问地址： oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI。</p>
        <p>2. 如果用户同意授权，页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE。</p>
        <p>3. POST方式请求：oauth2/token，参数中需要授权回传后的code，所需参数还有client_id、client_secret、grant_type和redirect_uri。</p>
        <p>4. 返回的access_token格式如上。</p>
        <p>5. oauth2/authorize页面判断用户是否授权登录，如果没有，将跳转至login.html，引导用户登录授权。</p>
        <h4>简化模式</h4>
        <h5>用户授权获取访问令牌</h5>
        <p>1. 访问地址： oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=token&redirect_uri=YOUR_REGISTERED_REDIRECT_URI。</p>
        <p>2. 如果用户同意授权，页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?access_token=TOKEN。</p>
        <p>3. oauth2/authorize页面判断用户是否授权登录，如果没有，将跳转至login.html，引导用户登录授权。</p>
        <h4>刷新令牌</h4>
        <h5>获取access_token</h5>
        <p>1. 请求地址：oauth2/token</p>
        <p>2. 请求参数</p>
        <p>
            <table class="sui-table table-bordered">
                <thead>
                    <tr>
                        <th>参数</th>
                        <th>值</th>
                        <th>说明</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>grant_type</td>
                        <td>refresh_token</td>
                        <td>授权类型</td>
                    </tr>
                    <tr>
                        <td>refresh_token</td>
                        <td>xxxx</td>
                        <td>刷新令牌</td>
                    </tr>
                    <tr>
                        <td>client_id</td>
                        <td>xxxxx</td>
                        <td>应用申请的ID</td>
                    </tr>
                    <tr>
                        <td>client_secret</td>
                        <td>xxxx</td>
                        <td>应用申请的密钥</td>
                    </tr>
                </tbody>
            </table>

        </p>
        <p>3. 返回参数</p>
        <p>
            <table class="sui-table table-bordered">
                <thead>
                    <tr>
                        <th>参数</th>
                        <th>值</th>
                        <th>说明</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>access_token</td>
                        <td>1a19d92f59</td>
                        <td>访问令牌</td>
                    </tr>
                    <tr>
                        <td>token_type</td>
                        <td>bearer</td>
                        <td>Authorization类型</td>
                    </tr>
                    <tr>
                        <td>expires_in</td>
                        <td>7200</td>
                        <td>访问令牌失效时间（秒），2小时</td>
                    </tr>
                    <tr>
                        <td>refresh_token</td>
                        <td>030d9af725</td>
                        <td>刷新令牌</td>
                    </tr>
                    <tr>
                        <td>refresh_expires_in</td>
                        <td>2592000</td>
                        <td>刷新令牌失效时间（秒），30天</td>
                    </tr>
                </tbody>
            </table>
            <span>注：返回格式JSON</span>
        </p>
    </div>
</body>
</html>
